//package com.cjl.demo.data.structure;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.concurrent.locks.ReentrantLock;
//
///**
// * <p>Description: </p>
// *Java 数字转成英文
// * 英文数词，按3位3位区分（最多9位）
// * Hundred: 100
// * Thousand:1,000
// * Million: 1,000,000
// * Billion: 1,000,000,000
// * Trillion: 1,000,000,000,000
// * 如下：
// * 4.	4,567 – four thousand, five hundred and sixty-seven
// * 5.	342 – three hundred and forty-two
// * 6.	98,745 – ninety-eight thousand, seven hundred and forty-five
// * 7.	120,005 – one hundred and twenty thousand and five
// * 8.	5,000 – five thousand
// * 9.	34,230 – thirty four thousand, two hundred and thirty
// * 10.	873,120 – eight hundred and seventy three thousand, one hundred and twenty
// * 11.	10,043 – ten thousand and forty three
// * 12.	7,340,200 – seven million, three hundred and forty thousand, two hundred
// * 13.	5,500 – five thousand, five hundred or fifty-five hundred
// * 14.	4,567,090 – four million, five hundred and sixty seven thousand and ninety
// * 15.	67,000 – sixty seven thousand
// * 16.	92,000,031 – ninety two million and thirty one
// * 所以把数字字符串按3位分割，分别解析
// * @ uthor chenjinliang
// * @ date: 2020/5/29
// */
//public class NumberToEnglish {
//    private static String[] numberEnglish = {"zero", "one", "tow", "three", "four", "five", "six", "seven", "eight",
//            "nine", "ten", "eleven", "twelve", "thirteen", "fourteen",
//            "fifteen", "sixteen", "seventeen", "eighteen", "nineteen",
//            "twenty", "", "", "", "", "", "", "", "", "", "thirty", "", "", "",
//            "", "", "", "", "", "", "fourty", "", "", "", "", "", "", "", "",
//            "", "fifty", "", "", "", "", "", "", "", "", "", "sixty", "", "",
//            "", "", "", "", "", "", "", "seventy", "", "", "", "", "", "", "",
//            "", "", "eighty", "", "", "", "", "", "", "", "", "", "ninety" };
//
//
//    private static String[] numberUnit = {"hundred", "thousand", "million",
//            "billion", "trillion"};
//
//    public String transNumberToEngish(long input){
//        return transNumberToEngish(String.valueOf(input));
//    }
//    public String transNumberToEngish(String input){
//        //1.参数校验，都是数字组成，无空格
//        //2.数据为0，直接返回；
//        if(input.length() == 1 && "0".equals(input)){
//            return numberEnglish[0];
//        }else if (input.length() > 9) { // 如果大于9，即大于999999999，题目限制条件
//            return "too big";
//        }
//        //3.拆分，每3位拆分一组
//        int count = input.length() %3 == 0 ? input.length() /3 : input.length() /3 +1 ;
//        //4.遍历
//        List<String> tmpList = new ArrayList<>();
//        for(int i= count -1; count >= 0; count --){
//            String tmp = input.substring()
//            tmpList.add()
//        }
//
//        // 可以根据需求适当追加enUnit
//        String[] group = new String[count];
//        for (int i = num.length(), j = group.length - 1; i > 0; i -= 3) {
//            group[j--] = num.substring(Math.max(i - 3, 0), i);
//        }
//        StringBuilder buf = new StringBuilder(); // 结果保存
//        for (int i = 0; i < count; i++) { // 遍历分割的组
//            int v = Integer.valueOf(group[i]);
//            if (v >= 100) { // 因为按3位分割，所以这里不会有超过999的数
//                buf.append(enNum[v / 100]).append(" ").append(enUnit[0])
//                        .append(" ");
//                v = v % 100; // 获取百位，并得到百位以后的数
//                if (v != 0) {
//                    buf.append("and ");
//                } // 如果百位后的数不为0，则追加and
//            }
//            if (v != 0) { // 前提是v不为0才作解析
//                if (v < 20 || v % 10 == 0) { // 如果小于20或10的整数倍e79fa5e98193e58685e5aeb931333335336439，直接取基本数词表的单词
//                    buf.append(enNum[v]).append(" ");
//                } else { // 否则取10位数词，再取个位数词
//                    buf.append(enNum[v - v % 10]).append(" ");
//                    buf.append(enNum[v % 10]).append(" ");
//                }
//                if (i != count - 1) { // 百位以上的组追加相应的单位
//                    buf.append(enUnit[count - 1 - i]).append(" ");
//                }
//            }
//        }
//        return buf.toString().trim(); // 返回值
//    }
//    }
//}
